import { getWXCode } from "@/api";
const jweixin = require("jweixin-module");

export default {
    //校验是否在微信端
    isWechat: ()=> {
        let ua = window.navigator.userAgent.toLowerCase();
        if (ua.match(/micromessenger/i) == 'micromessenger') {
            console.log('微信端')
            return true;
        } else {
            console.log('非微信端')
            return false;
        }
    },
    initJssdk: async function(callback) {
        let _ = this
        let url = window.location.href.split('#')[0];
        //服务端进行签名 ，可使用uni.request替换。 签名算法请看文档
        try{
            const { data: res } = await getWXCode(url)
            if(res.success==true){
                jweixin.config({
                    debug: false,
                    appId: res.data.appid, // 必填，公众号的唯一标识
                    timestamp: res.data.timestamp, // 必填，生成签名的时间戳
                    nonceStr: res.data.nonceStr, // 必填，生成签名的随机串
                    signature: res.data.signature, // 必填，签名
                    jsApiList: ['checkJsApi','scanQRCode'] // 必填，需要使用的JS接口列表
                })
                if (callback) {
                    callback(res.data);
                }
            }else {}
        }catch (e) {
            uni.$u.toast('微信SDK校验错误')
        }
    },

    scanQRCode: function (callback) {
        if (!this.isWechat()) {
            return
        }
        this.initJssdk((res)=> {
            console.log('扫码了',res);
            jweixin.ready(()=> {
                jweixin.scanQRCode({
                    needResult: 1, // 默认为0，扫描结果由微信处理，1则直接返回扫描结果，
                    scanType: ["qrCode", "barCode"], // 可以指定扫二维码还是一维码，默认二者都有
                    success: (res)=> {
                        //二维码返回一条字符串
                        //条形码返回CODE_128,898602E5011890131335
                        let code = res.resultStr.split(',').length==1?res.resultStr.split(',')[0].trim():res.resultStr.split(',')[1].trim()
                        callback(code)
                        console.log('扫码成功',res);
                    },
                    fail: function(err) {
                        console.log('扫码失败',err);
                    },
                });
            });
        });
    },

}
